home *** CD-ROM | disk | FTP | other *** search
/ Software for Women / Software-pro-Zeny.bin / Diary2002 1.0 / diary2002.cgi next >
Encoding:
Text File  |  2002-09-03  |  30.6 KB  |  834 lines

  1. #!/usr/bin/perl
  2.  
  3. print "Content-type: text/html\n\n";
  4.  
  5. # the first line MUST point to the location of perl on your server if
  6. # you are running this program on a unix server.
  7. # you may try also "#!/usr/local/bin/perl".
  8. #######################################################################
  9. # free CGI scripts by Homemade Scripts / copyright.
  10. # free download at http://www.automarktregistrierung.de/webmaster.html.
  11. # author may not be held responsible
  12. # for any damage caused by use of this script.
  13. # you may change this script for your needs.
  14. # if you need help for setup or like to customize this script,
  15. # or if you found a bug, or any comments,
  16. # drop mail to "deschakovskiholger@freenet.de".
  17. #
  18. #######################################################################
  19. # set up to be done by user.
  20. #
  21. # create a folder named maybe "diary2002" inside your cgi-bin.
  22. # upload "diary2002.cgi" in your "diary2002" folder.
  23. # chmod "diary2002.cgi" 755.
  24.  
  25. $homepath = "/usr/local/httpd/htdocs/www/yoursite.com/cgi-bin/diary2002";
  26. # absolute homepath to your "diary2002" folder according to your site.
  27. # leave the backslash "/" at the end of homepath.
  28.  
  29. # following variables maybe changed if you like to!!!
  30.  
  31. $textdir = "articles";
  32. # name of folder where articles are stored.
  33. # this folder will be created by diary2002 inside your "diary2002" folder.
  34. # you may rename this folder according to your needs.
  35.  
  36. $userdir = "user";
  37. # name of folder where user info is stored.
  38. # this folder will be created by diary2002 inside your "diary2002" folder.
  39. # you may rename this folder according to your needs.
  40.  
  41. # last step:
  42. # call diary2002.cgi with your browser like this:
  43. # http://www.yoursite.com/cgi-bin/diary2002/diary2002.cgi
  44. # follow instructions displayed on screen.
  45.  
  46. # there should be no more work to do for you.
  47. # you will be able to change the layout and user info,
  48. # like password and user name plus many more inside your admin area.
  49. #######################################################################
  50. # initiate cgi modul.
  51. use CGI;
  52. my $cgi = new CGI;
  53. use CGI::Carp qw(fatalsToBrowser);
  54.  
  55. # relative script path.
  56. $rel = $cgi->url(-relative=>1);
  57. #######################################################################
  58. # absolute pathes for directorys.
  59. $textdirectory = "$homepath/$textdir";
  60. $userdirectory = "$homepath/$userdir";
  61. #######################################################################
  62.  
  63. # control if file text exists.
  64. $showcontrol = -e "$userdirectory/file.txt";
  65.  
  66. # if $showcontrol doesnt exist, initiate first time run.
  67. # first time run code following now.
  68. if ("$showcontrol" ne "1") {
  69.  
  70.  
  71. # create directorys.
  72. mkdir($textdir, 0777); # textdirectory where articles are stored.
  73. mkdir($userdir, 0777); # userdirectory where user info is stored.
  74.  
  75. # print your user info file first time.
  76. open (PRO,">$userdirectory/file.txt");
  77. print PRO "admin\n";
  78. print PRO "pwd";
  79. close(PRO);
  80.  
  81. # print your layout info file first time.
  82. open (ENV,">$userdirectory/layout.txt");
  83. print ENV "my online journal\n";
  84. print ENV "#FFFFFF\n";
  85. print ENV "#000000\n";
  86. print ENV "4\n";
  87. close (ENV);
  88.  
  89. # print welcome and instructions for first time use.
  90. print "<h2>welcome to diary2002 - my online journal</h2>";
  91. print "please follow instructions for first time run.<p>";
  92. print "use following: username = admin, password = pwd for first time \"user login\"<br>";
  93. print "login immediately and change your username and password.<br>";
  94. print "inside your admin area you may also change the layout for diary2002<p>";
  95. print "(this info will show up only one time)<p><br>";}
  96. #######################################################################
  97. #######################################################################
  98. #######################################################################
  99. # definition for parameters coming in from html forms.
  100.  
  101. # for sub "open" & "process".
  102. $user1 = $cgi->param('user');
  103. $pass1 = $cgi->param('pass');
  104.  
  105. # for sub "post".
  106. $title = $cgi->param('title');
  107. $article = $cgi->param('article');
  108.  
  109. # for sub "delete".
  110. $file = $cgi->param('file');
  111.  
  112. # for sub "prolayout".
  113. $slogan1 = $cgi->param('slogan');
  114. $back1 = $cgi->param('back');
  115. $font1 = $cgi->param('font');
  116. $number1 = $cgi->param('number');
  117.  
  118. # for sub "searchme".
  119. $search = $cgi->param('search');
  120. ######################################################################
  121. # start the show!
  122. # get layout variables.
  123. &layout;
  124.  
  125. # get time and date. print html.
  126. &timer;
  127. $dat = "current date and time $date | $time";
  128.  
  129. print "<html>\n";
  130. print "<head>\n";
  131. print "$head\n";
  132. print "</head>\n";
  133.  
  134. print "<body bgcolor=\"$backcolor\"><center>\n";
  135. print "<table border=0 width=700><tbody><tr valign=top>\n";
  136. print "<td align=left>";
  137. print "<table border=0>";
  138.  
  139. print "<tr><td> </td><td> </td><td>$brick</td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td>$brick</td><td> </td></tr>";
  140. print "<tr><td> </td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td> </td><td> </td><td>$brick</td><td> </td><td>$brick</td><td>$brick</td><td>$brick</td><td> </td><td> </td><td>$brick</td><td> </td><td>$brick</td><td> </td><td><font color=\"$fontcolor\"><b>2</b></font></td></tr>";
  141. print "<tr><td>$brick</td><td>$brick</td><td>$brick</td><td> </td><td>$brick</td><td> </td><td>$brick</td><td>$brick</td><td>$brick</td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td> </td><td> </td><td>$brick</td><td> </td><td> </td><td><font color=\"$fontcolor\"><b>0</b></font></td></tr>";
  142. print "<tr><td>$brick</td><td> </td><td>$brick</td><td> </td><td>$brick</td><td> </td><td>$brick</td><td> </td><td>$brick</td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td><font color=\"$fontcolor\"><b>0</b></font></td></tr>";
  143. print "<tr><td>$brick</td><td>$brick</td><td>$brick</td><td> </td><td>$brick</td><td> </td><td>$brick</td><td>$brick</td><td>$brick</td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td>$brick</td><td> </td><td> </td><td> </td><td> </td><td><font color=\"$fontcolor\"><b>2</b></font></td></tr>";
  144.  
  145. print "</table>";
  146.  
  147. print "</td>\n";
  148. print "<td align=left><font color=\"$fontcolor\" size=\"+3\">$slogan</font>\n";
  149. print "<br><font color=\"$fontcolor\">$dat</font>\n";
  150.  
  151. print "<table border=0 cellspacing=10><tbody><tr>\n";
  152. print "<td><a href='$rel?display'>index | read articles</a></td>";
  153. print "<td><a href='$rel?search'>search articles</a></td>\n";
  154. print "<td><a href='$rel?pwd'>user login</a></td>\n";
  155. print "</tr></tbody></table>\n";
  156.  
  157. print "</td></tr></tbody></table>\n";
  158.  
  159. print "<table border=0 width=700 cellspacing=50><tbody><tr valign=top><td>";
  160. if($ENV{'QUERY_STRING'} eq 'newpost'){&newpost;}
  161. elsif($ENV{'QUERY_STRING'} eq 'delpost'){&delpost;}
  162. elsif($ENV{'QUERY_STRING'} eq 'admin'){&admin;}
  163. elsif($ENV{'QUERY_STRING'} eq 'display'){&display;}
  164. elsif($ENV{'QUERY_STRING'} eq 'post') {&post;}
  165. elsif($ENV{'QUERY_STRING'} eq 'delete') {&delete;}
  166. elsif($ENV{'QUERY_STRING'} eq 'delall') {&delall;}
  167. elsif($ENV{'QUERY_STRING'} eq 'displong') {&displong;}
  168. elsif($ENV{'QUERY_STRING'} eq 'dispback') {&dispback;}
  169. elsif($ENV{'QUERY_STRING'} eq 'process') {&process;}
  170. elsif($ENV{'QUERY_STRING'} eq 'pwd') {&pwd;}
  171. elsif($ENV{'QUERY_STRING'} eq 'open') {&open;}
  172. elsif($ENV{'QUERY_STRING'} eq 'prolayout') {&prolayout;}
  173. elsif($ENV{'QUERY_STRING'} eq 'search') {&search;}
  174. elsif($ENV{'QUERY_STRING'} eq 'searchme') {&searchme;}
  175. else {&display;}
  176. print "</td></tr></tbody></table>";
  177.  
  178. print "<a href='http://www.automarktregistrierung.de/webmaster.html'>⌐ diary2002.cgi | my online journal</a>";
  179. print "</center></body></html>\n";
  180.  
  181. ######################################################################
  182. # post new article.
  183.  
  184. sub newpost {
  185. print "<h2><font color=\"$fontcolor\">post new article.</font></h2>";
  186. print "<form action=\"$rel?post\" method=\"post\">";
  187. print "<table border=0 cellPadding=3><tbody>";
  188. print "<tr><td><font color=\"$fontcolor\">title</font>  ";
  189. print "<INPUT type=text name=title size=55></td></tr>";
  190. print "<tr><td><textarea name=article cols=50 rows=10></textarea>";
  191. print "</td></tr></tbody></table>";
  192. print "<INPUT name=submit type=submit value=submit> <INPUT name=reset type=reset value=reset></form>";
  193. print "<font color=\"$fontcolor\">INFO: if you like to post a link to an website.<br>please use following html syntax:<br><a href=\"http://www.sitename.com\">sitename</a><br>or following for posting an email adress:<br><a href=\"mailto:webmaster\@yoursite.com\">webmaster\@yoursite.com</a></font>";
  194.  
  195. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  196. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  197. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  198. print "</tr></tbody></table>\n";}
  199. ######################################################################
  200. # display articles.
  201.  
  202. sub display {
  203.  
  204. chdir ("$textdirectory");
  205. @text = glob "*.txt";
  206. @sort = sort {$b <=> $a} @text;
  207. print "<h2><font color=\"$fontcolor\">read articles.</font></h2>";
  208.  
  209. if (@sort == "0"){
  210. print "<font color=\"$fontcolor\">soorry. no articles to read.</font>";}
  211.  
  212. else {
  213. open (DIS,"$userdirectory/count.txt");
  214. $readcount = <DIS>;
  215. $countdisplay = "number of articles online: $readcount";
  216. print "<font color=\"$fontcolor\">$countdisplay</font>";
  217. close(DIS);
  218.  
  219. if (@sort <= $artnr) {
  220.  
  221. foreach $text (@sort){
  222. open (TEXT,"$textdirectory/$text");
  223. @tex = <TEXT>;
  224. $line = shift(@tex);
  225. $popdate = pop(@tex);
  226.  
  227. print "<table border=1 cellpadding=5 width=600><tbody>";
  228. print "<tr><td align=left><font color=\"$fontcolor\"><b>$line</b></font></td></tr>";
  229. print "<tr><td align=left><font color=\"$fontcolor\">";
  230. foreach $textline (@tex) {
  231. print "$textline<br>";}
  232. print "</font><p>";
  233. print "<font color=\"$fontcolor\" size=\"-1\">$popdate</font></td></tr>";
  234. print "</tbody></table><p>";
  235. close (TEXT);}}
  236.  
  237. else {
  238. print " <font color=\"$fontcolor\">|</font> <a href='$rel?displong'>next articles</a>";
  239.  
  240. foreach (1..$artnr) {
  241. $shifttext = shift(@sort);
  242. open (TEXT,"$textdirectory/$shifttext");
  243. @tex = <TEXT>;
  244. $line = shift(@tex);
  245. $popdate = pop(@tex);
  246.  
  247. print "<table border=1 cellpadding=5 width=600><tbody>";
  248. print "<tr><td align=left><font color=\"$fontcolor\"><b>$line</b></font></td></tr>";
  249. print "<tr><td align=left><font color=\"$fontcolor\">";
  250. foreach $textline (@tex) {
  251. print "$textline<br>";}
  252. print "</font><p>";
  253. print "<font color=\"$fontcolor\" size=\"-1\">$popdate</font></td></tr>";
  254. print "</tbody></table><p>";
  255. close (TEXT);}
  256. print "<a href='$rel?displong'>next articles</a>";
  257.  
  258. open (SORT,">$userdirectory/sort.txt");
  259. foreach $print (@sort){
  260. print SORT "$print\n";}
  261. close (SORT);}
  262. }}
  263. ######################################################################
  264. # display articles bigger than $artnr for one site.
  265.  
  266. sub displong {
  267.  
  268. open (SORTA,"$userdirectory/sort.txt");
  269. @sort1 = <SORTA>;
  270. close (SORTA);
  271.  
  272.  
  273. open (DIS,"$userdirectory/count.txt");
  274. $readcount = <DIS>;
  275. $countdisplay = "number of articles online: $readcount";
  276. close(DIS);
  277.  
  278. print "<h2><font color=\"$fontcolor\">read articles.</font></h2>";
  279. print "<font color=\"$fontcolor\">$countdisplay</font>";
  280.  
  281. if (@sort1 <= $artnr) {
  282. print " <font color=\"$fontcolor\">|</font> <a href='$rel?displong'>previous articles</a>";
  283.  
  284. foreach $text1 (@sort1) {
  285. open (TEXT,"$textdirectory/$text1");
  286. @tex = <TEXT>;
  287. $line = shift(@tex);
  288. $popdate = pop(@tex);
  289.  
  290. print "<table border=1 cellpadding=5 width=600><tbody>";
  291. print "<tr><td align=left><font color=\"$fontcolor\"><b>$line</b></font></td></tr>";
  292. print "<tr><td align=left><font color=\"$fontcolor\">";
  293. foreach $textline (@tex) {
  294. print "$textline<br>";}
  295. print "</font><p>";
  296. print "<font color=\"$fontcolor\" size=\"-1\">$popdate</font></td></tr>";
  297. print "</tbody></table><p>";
  298. close (TEXT);}
  299. print "<a href='$rel?displong'>previous articles</a>";
  300.  
  301. open (SORTB,">$userdirectory/sort.txt");
  302. $back1 = "@sort1";
  303. $back = substr ($back1, 0, 1);
  304. $backcount = $back + $artnr;
  305.  
  306. foreach (1..$artnr) {
  307. $new = $backcount--;
  308. print SORTB "$new.txt\n";}
  309.  
  310. foreach $back2 (@sort1) {
  311. print SORTB "$back2";}
  312.  
  313. close (SORTB);
  314. }
  315.  
  316. else {
  317. @sort2 = @sort1;
  318. $highcontrol = shift(@sort2);
  319. substr($highcontrol, -5) = "";
  320.  
  321. if ($highcontrol == $readcount) {
  322. print " <font color=\"$fontcolor\">|</font> <a href='$rel?displong'>next articles</a>";}
  323.  
  324. else {
  325. print " <font color=\"$fontcolor\">|</font> <a href='$rel?displong'>next articles</a>";
  326. print " <font color=\"$fontcolor\">|</font> <a href='$rel?dispback'>previous articles</a>";}
  327.  
  328. foreach (1..$artnr) {
  329. $shifttext1 = shift(@sort1);
  330. open (TEXT,"$textdirectory/$shifttext1");
  331. @tex = <TEXT>;
  332. $line = shift(@tex);
  333. $popdate = pop(@tex);
  334.  
  335. print "<table border=1 cellpadding=5 width=600><tbody>";
  336. print "<tr><td align=left><font color=\"$fontcolor\"><b>$line</b></font></td></tr>";
  337. print "<tr><td align=left><font color=\"$fontcolor\">";
  338. foreach $textline (@tex) {
  339. print "$textline<br>";}
  340. print "</font><p>";
  341. print "<font color=\"$fontcolor\" size=\"-1\">$popdate</font></td></tr>";
  342. print "</tbody></table><p>";
  343. close (TEXT);}
  344.  
  345. if ($highcontrol == $readcount) {
  346. print "<a href='$rel?displong'>next articles</a>";}
  347.  
  348. else {
  349. print "<a href='$rel?displong'>next articles</a>";
  350. print " <font color=\"$fontcolor\">|</font> <a href='$rel?dispback'>previous articles</a>";}
  351.  
  352. open (SORT,">$userdirectory/sort.txt");
  353. foreach $print1 (@sort1) {
  354. print SORT "$print1";}
  355. close (SORT);}
  356. }
  357. ######################################################################
  358. # articles backcount.
  359.  
  360. sub dispback {
  361. open (SORTA,"$userdirectory/sort.txt");
  362. @back = <SORTA>;
  363. $back1 = "@back";
  364. close (SORTA);
  365.  
  366.  
  367. $double = ($artnr*2);
  368. $back = substr ($back1, 0, 1);
  369. $backcount = $back + $double;
  370.  
  371. open (SORTB,">$userdirectory/sort.txt");
  372.  
  373. foreach (1..$double) {
  374. $new = $backcount--;
  375. print SORTB "$new.txt\n";}
  376.  
  377. foreach $back2 (@back){
  378. print SORTB "$back2";}
  379.  
  380. close (SORTB);
  381. &displong;}
  382. ######################################################################
  383. # process new post.
  384.  
  385. sub post {
  386.  
  387. if (("$title" eq "") || ("$article" eq ""))
  388. {print "<font color=\"$fontcolor\">alert no data input. please return <a href='$rel?newpost'>click here</a>.</font>";}
  389.  
  390. else {
  391. &timer;
  392. &counter;
  393. &pluscounter;
  394.  
  395. $countin = "article number: $newcount";
  396. $posted = "posted $date | $time";
  397.  
  398. open (NEW,">$textdirectory/$newcount.txt");
  399. print NEW "$title\n";
  400. print NEW "$article\n";
  401. print NEW "$posted | $countin\n";
  402. close (NEW);
  403. print "<h2><font color=\"$fontcolor\">new article $title posted.</font></h2>";
  404. print "<a href='$rel?display'>click here to read</a>";
  405. &close;}
  406.  
  407. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  408. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  409. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  410. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  411. print "</tr></tbody></table>\n";}
  412. ######################################################################
  413. # get time and date.
  414.  
  415. sub timer {
  416. use POSIX qw(strftime);
  417. $date = strftime "%Y-%m-%d", localtime;
  418. $time = strftime "%H:%M:%S", localtime;}
  419. ######################################################################
  420. # counter for articles.
  421.  
  422. sub counter {
  423. open (COUNT,"$userdirectory/count.txt");
  424. $oldcount = <COUNT>;
  425. close (COUNT);
  426.  
  427. open (COUNTER,">$userdirectory/count.txt");}
  428.  
  429. sub minuscounter {
  430. $minuscount = $oldcount - 1;
  431. print COUNTER "$minuscount";}
  432.  
  433. sub pluscounter {
  434. $newcount = $oldcount + 1;
  435. print COUNTER "$newcount";}
  436.  
  437. sub close {
  438. close (COUNTER);}
  439. ######################################################################
  440. # delete article form.
  441.  
  442. sub delpost {
  443. chdir ("$textdirectory");
  444. @deleteun = glob "*.txt";
  445. @delete = sort {$a <=> $b} @deleteun;
  446.  
  447. print "<h2><font color=\"$fontcolor\">delete article.</font></h2>";
  448. if (@delete == "0") {
  449. print "<font color=\"$fontcolor\">no articles to delete. please post one.</font> ";
  450. print "<a href='$rel?newpost'>click here</a>";}
  451. else {
  452. print "<font color=\"$fontcolor\">delete all articles</font> <a href='$rel?delall'>click here</a>.<br>";
  453. print "<font color=\"$fontcolor\">or choose only one article to be deleted.</font>";
  454. print "<form action=\"$rel?delete\" method=\"post\">";
  455. print "<table border=0 cellPadding=3><tbody>";
  456.  
  457. foreach $del (@delete) {
  458.  
  459. open (DEL,"$del");
  460. @tit = <DEL>;
  461. $tit = shift(@tit);
  462. print "<tr><td><INPUT type=radio name=file value=$del><font color=\"$fontcolor\">$del | $tit.</font></td></tr>";
  463. close (DEL);}
  464.  
  465. print "</tbody></table>";
  466. print "<INPUT name=submit type=submit value=delete> <INPUT name=reset type=reset value=reset></form>";
  467.  
  468. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  469. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  470. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  471. print "</tr></tbody></table>\n";}}
  472. ######################################################################
  473. # process delete articles.
  474.  
  475. sub delete {
  476.  
  477. if ("$file" eq "")
  478. {print "<font color=\"$fontcolor\">alert no data input. please return <a href='$rel?delpost'>click here</a>.</font>";}
  479.  
  480. else {
  481. &counter;
  482. &minuscounter;
  483.  
  484. open(TITO,"$textdirectory/$file");
  485. @tito = <TITO>;
  486. $tito = shift(@tito);
  487. print "<h2><font color=\"$fontcolor\">article deleted.</font></h2>";
  488. print "<font color=\"$fontcolor\">$file | $tito deleted.</font><p>";
  489. close (TITO);
  490.  
  491. unlink "$textdirectory/$file";
  492. &close;
  493.  
  494. chdir "$textdirectory";
  495. @rebuildun = glob "*.txt";
  496. @rebuild = sort {$a <=> $b} @rebuildun;
  497.  
  498. if (@rebuild == "0"){}
  499.  
  500. else {
  501. substr ($file, -4) = "";
  502.  
  503. do {
  504. $rebuild = shift(@rebuild);
  505.  
  506. substr ($rebuild, -4) = "";
  507.  
  508. if ("$rebuild" < "$file") {}
  509.  
  510. else {
  511. $log = "$rebuild";
  512.  
  513. open (BUILDER,"$textdirectory/$log.txt");
  514. @build = <BUILDER>;
  515. $build = pop (@build);
  516. do {
  517. chop ($build);
  518. $zero = length($build);}
  519. until ($zero == "46");
  520. close(BUILDER);
  521.  
  522. open (BU,">$textdirectory/$log.txt");
  523.  
  524. $newlog = $log - 1;
  525.  
  526. $buildtit = shift(@build);
  527. print BU "$buildtit";
  528. print BU "@build";
  529. print BU "$build $newlog";
  530. close(BU);
  531.  
  532. rename ("$log.txt" , "$newlog.txt");
  533. print "<font color=\"$fontcolor\">$log.txt renamed to $newlog.txt.</font><br>";}
  534.  
  535. }until (@rebuild == 0);
  536. if ($rebuild != "1"){
  537. print "<font color=\"$fontcolor\">renamed all file names for counting. all data is save.</font>";}}}
  538.  
  539. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  540. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  541. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  542. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  543. print "</tr></tbody></table>\n";}
  544. ######################################################################
  545. # delete all articles.
  546.  
  547. sub delall {
  548. chdir ("$textdirectory");
  549. @delallun = glob "*.txt";
  550. @delall = sort {$a <=> $b} @delallun;
  551.  
  552. unlink "$userdirectory/count.txt";
  553. unlink "$userdirectory/sort.txt";
  554.  
  555. foreach $delall (@delall){unlink "$textdirectory/$delall";
  556. print "<font color=\"$fontcolor\">$delall deleted.<br></font>";}
  557. print "<h2><font color=\"$fontcolor\">all articles deleted.</font></h2>";
  558.  
  559. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  560. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  561. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  562. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  563. print "</tr></tbody></table>\n";}
  564. ######################################################################
  565. # admin area.
  566.  
  567. sub admin {
  568. print "<h2><font color=\"$fontcolor\">admin area.</font></h2>";
  569. print "<font color=\"$fontcolor\"><b>1. set username and password.</b></font><br>";
  570. print "<font color=\"$fontcolor\">please use no spaces.</font>";
  571.  
  572. print "<form action=\"$rel?process\" method=\"post\">";
  573. print "<table border=0 cellPadding=3><tbody>";
  574. print "<tr><td><font color=\"$fontcolor\">username</font></td>";
  575. print "<td><INPUT type=text name=user size=30></td></tr>";
  576. print "<tr><td><font color=\"$fontcolor\">password</font></td>";
  577. print "<td><INPUT type=text name=pass size=30></td></tr>";
  578. print "</tbody></table>";
  579. print "<INPUT name=submit type=submit value=submit> <INPUT name=reset type=reset value=reset></form>";
  580.  
  581. print "<font color=\"$fontcolor\"><p><b>2. set layout variables.</b><br></font>";
  582. print "<font color=\"$fontcolor\">if you like to change the layout please fill in all five form fields, even if you need to change only one variable!<br></font>";
  583.  
  584. print "<form action=\"$rel?prolayout\" method=\"post\">";
  585. print "<table border=0 cellPadding=3><tbody>";
  586.  
  587. print "<tr><td valign=top><font color=\"$fontcolor\">slogan for your journal</font></td>";
  588. print "<td><INPUT type=text name=slogan size=40>";
  589. print "<br><font color=\"$fontcolor\">e.g. my personal diary.</font></td></tr>";
  590.  
  591. print "<tr><td valign=top><font color=\"$fontcolor\">background color</font></td>";
  592. print "<td><INPUT type=text name=back size=40>";
  593. print "<br><font color=\"$fontcolor\">e.g. #FFFFFF, which is white.</font></td></tr>";
  594.  
  595. print "<tr><td valign=top><font color=\"$fontcolor\">font color</font></td>";
  596. print "<td><INPUT type=text name=font size=40>";
  597. print "<br><font color=\"$fontcolor\">e.g. #000000, which is black.</font></td></tr>";
  598.  
  599. print "<tr><td valign=top><font color=\"$fontcolor\">number of articles<br>displayed on one site</font></td>";
  600. print "<td><INPUT type=text name=number size=10>";
  601. print "<br><font color=\"$fontcolor\">e.g. 4, only the number nothing else.</font></td></tr>";
  602.  
  603. print "</tbody></table>";
  604. print "<INPUT name=submit type=submit value=submit> <INPUT name=reset type=reset value=reset></form>";
  605.  
  606. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  607. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  608. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  609. print "</tr></tbody></table>\n";
  610.  
  611. print "<table border=1 cellspacing=0 cellpadding=5><tbody>";
  612. print "<tr><td><font color=\"$fontcolor\"><b>some hexadezimal color codes:</b></font></td></tr>";
  613. print "<tr><td>";
  614. print "<table border=0 cellspacing=10><tbody>";
  615. print "<tr><td>#FF0000</td><td><font color='#FF0000'>= red</font></td>";
  616. print "<td>#0000FF</td><td><font color='#0000FF'>= blue</font></td>";
  617. print "<td>#008000</td><td><font color='#008000'>= green</font></td></tr>";
  618.  
  619. print "<tr><td>#FFFF00</td><td><font color='#FF0000'>= yellow</font></td>";
  620. print "<td>#FF6347</td><td><font color='#FF6347'>= tomato</font></td>";
  621. print "<td>#EE82EE</td><td><font color='#EE82EE'>= violet</font></td></tr>";
  622.  
  623. print "<tr><td>#C0C0C0</td><td><font color='#C0C0C0'>= silver</font></td>";
  624. print "<td>#A52A2A</td><td><font color='#A52A2A'>= brown</font></td>";
  625. print "<td>#008000</td><td><font color='#008000'>= grey</font></td></tr>";
  626.  
  627. print "<tr><td>#00BFFF</td><td><font color='#00BFFF'>= deepskyblue</font></td>";
  628. print "<td>#FF69B4</td><td><font color='#FF69B4'>= hotpink</font></td>";
  629. print "<td>#FFE4B5</td><td><font color='#FFE4B5'>= moccasin</font></td></tr>";
  630.  
  631. print "<tr><td>#800080</td><td><font color='#800080'>= purple</font></td>";
  632. print "<td>#000080</td><td><font color='#000080'>= navy</font></td>";
  633. print "<td>#FFA500</td><td><font color='#FFA500'>= orange</font></td></tr>";
  634. print "</tbody></table>";
  635. print "</td></tr></tbody></table>";
  636. }
  637. ######################################################################
  638. # process user info / password / username.
  639.  
  640. sub process {
  641.  
  642. if (("$user1" eq "") || ("$pass1" eq ""))
  643. {print "<font color=\"$fontcolor\">alert no data input. please return <a href='$rel?admin'>click here</a>.</font>";}
  644.  
  645. else {
  646. open (PRO,">$userdirectory/file.txt");
  647. print PRO "$user1\n";
  648. print PRO "$pass1";
  649. close(PRO);
  650.  
  651. print "<font color=\"$fontcolor\"><h2>new user info set.</h2></font>";
  652. print "<font color=\"$fontcolor\">username = $user1.</font><br>";
  653. print "<font color=\"$fontcolor\">password = $pass1.</font><br>";
  654. print "<font color=\"$fontcolor\">please save for further use.</font>";}
  655.  
  656. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  657. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  658. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  659. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  660. print "</tr></tbody></table>\n";}
  661. ######################################################################
  662. # user login form.
  663.  
  664. sub pwd {
  665. print "<font color=\"$fontcolor\"><h2>user login.</h2></font>";
  666. print "<font color=\"$fontcolor\">please type in your password and username.</font>";
  667.  
  668. print "<form action=\"$rel?open\" method=\"post\">";
  669. print "<table border=0 cellPadding=3><tbody>";
  670. print "<tr><td><font color=\"$fontcolor\">username</font></td>";
  671. print "<td><INPUT type=text name=user size=30></td></tr>";
  672. print "<tr><td><font color=\"$fontcolor\">password</font></td>";
  673. print "<td><INPUT type=text name=pass size=30></td></tr>";
  674. print "</tbody></table>";
  675. print "<INPUT name=submit type=submit value=submit> <INPUT name=reset type=reset value=reset></form>";}
  676. ######################################################################
  677. # process user login form data.
  678.  
  679. sub open {
  680. open (PRO,"$userdirectory/file.txt");
  681. @user = <PRO>;
  682. close(PRO);
  683.  
  684. $user = shift(@user); chomp($user);
  685. $pass = shift(@user); chomp($pass);
  686.  
  687. if (("$user" eq "$user1") && ("$pass" eq "$pass1")) {
  688. print "<font color=\"$fontcolor\"><h2>welcome $user.</h2></font>";
  689. print "<font color=\"$fontcolor\">where do you like to go?<br></font>";
  690. print "<font color=\"$fontcolor\">please choose from following menue.</font>";
  691.  
  692. print "<table border=0 cellspacing=10><tbody><tr>\n";
  693. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  694. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  695. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  696. print "</tr></tbody></table>\n";}
  697.  
  698. else {
  699. print "<font color=\"$fontcolor\"><h2>access denied.</h2></font>";
  700. print "<font color=\"$fontcolor\">please try again <a href='$rel?pwd'>click here</a>.</font>";}
  701. }
  702. ######################################################################
  703. # process environment variables.
  704.  
  705. sub prolayout {
  706. if (("$slogan1" eq "") || ("$back1" eq "") || ("$font1" eq "") || ("$number1" eq ""))
  707. {print "<font color=\"$fontcolor\">alert fill in all fields. please return <a href='$rel?admin'>click here</a>.</font>";}
  708.  
  709. else {
  710. open (ENV,">$userdirectory/layout.txt");
  711. print ENV "$slogan1\n";
  712. print ENV "$back1\n";
  713. print ENV "$font1\n";
  714. print ENV "$number1\n";
  715. close (ENV);
  716.  
  717. print "<font color=\"$fontcolor\"><h2>set layout variables.</h2></font>";
  718. print "<font color=\"$fontcolor\">slogan = $slogan1.</font><br>";
  719. print "<font color=\"$fontcolor\">background color = $back1.</font><br>";
  720. print "<font color=\"$fontcolor\">font color = $font1.</font><br>";
  721. print "<font color=\"$fontcolor\">number of articles = $number1.</font><br>";}
  722.  
  723. print "<p><table border=0 cellspacing=10><tbody><tr>\n";
  724. print "<td><a href='$rel?newpost'>new article</a></td>\n";
  725. print "<td><a href='$rel?delpost'>delete article</a></td>\n";
  726. print "<td><a href='$rel?admin'>admin area</a></td>\n";
  727. print "</tr></tbody></table>\n";}
  728. ######################################################################
  729. # get environment variables.
  730.  
  731. sub layout {
  732.  
  733. open (LAY,"$userdirectory/layout.txt");
  734. @lay = <LAY>;
  735. close(LAY);
  736.  
  737. $slogan = shift(@lay);
  738. chomp($slogan);
  739.  
  740. $backcolor = shift(@lay);
  741. chomp($backcolor);
  742.  
  743. $fontcolor = shift(@lay);
  744. chomp($fontcolor);
  745.  
  746. $artnr = shift(@lay);
  747. chomp($artnr);
  748.  
  749. $head = "
  750. <title>$slogan</title>
  751. <META content=\"all\" name=\"robots\">
  752. <META content=\"follow\" name=\"robots\">
  753. <META content=\"all\" name=\"audience\">
  754. <META content=\"all\" name=\"rating\">
  755. <META content=\"all\" name=\"Classification\">
  756. <META content=\"Global\" name=\"distribution\">
  757. <META content=\"30 days\" name=\"revisit-after\">
  758. <META content=\"all\" name=\"voluntary content rating\">
  759. <META content=\"$slogan, online journal, web diary, weblog\" name=\"page-type\">
  760. <META content=\"$slogan, online journal, web diary, weblog\" name=\"description\">
  761. <META content=\"$slogan,online journal,web diary,weblog,blogger,journal\" name=\"keywords\">";
  762. # end of head.
  763. # leave like is or customize.
  764.  
  765. $brick = "<font color=\"$fontcolor\">*</font>";
  766. }
  767. ######################################################################
  768. # search form.
  769.  
  770. sub search {
  771. print "<font color=\"$fontcolor\"><h2>search $slogan.</h2></font>";
  772. print "<font color=\"$fontcolor\">please type in your search request.</font>";
  773.  
  774. print "<form action=\"$rel?searchme\" method=\"post\">";
  775. print "<table border=0 cellPadding=3><tbody>";
  776. print "<tr><td><font color=\"$fontcolor\">search for</font></td>";
  777. print "<td><INPUT type=text name=search size=40></td></tr>";
  778. print "</tbody></table>";
  779. print "<INPUT name=submit type=submit value=search> <INPUT name=reset type=reset value=reset></form>";}
  780. ######################################################################
  781. # search process.
  782.  
  783. sub searchme {
  784. if ("$search" eq "")
  785. {print "<font color=\"$fontcolor\">alert no data input. please return <a href='$rel?search'>click here</a>.</font>";}
  786.  
  787.  
  788. else {
  789. print "<font color=\"$fontcolor\"><h2>search results.</h2></font>";
  790.  
  791. chdir ("$textdirectory");
  792. @searchun = glob "*.txt";
  793.  
  794. if (@searchun == "0") {
  795. print "<font color=\"$fontcolor\">soorry. no articles to search.";}
  796.  
  797. else {
  798. print "<font color=\"$fontcolor\">following articles contain your search term: \"$search\".</font><p>";
  799.  
  800. @search = sort {$b <=> $a} @searchun;
  801.  
  802.  do {
  803.  $se = shift(@search);
  804.  $byte = -s "$textdirectory/$se";
  805.  open (SEARCH,"<$textdirectory/$se");
  806.  read (SEARCH, $data, $byte) or die "can not read $se: $!\n";
  807.  
  808.      if ($data =~ /$search/i) {
  809.      $found = "yes";
  810.      open (SEARCHA,"$textdirectory/$se");
  811.      @se = <SEARCHA>;
  812.      $line = shift(@se);
  813.      $popdate = pop(@se);
  814.      print "<table border=1 cellpadding=5 width=600><tbody>";
  815.      print "<tr><td align=left><font color=\"$fontcolor\"><b>$line</b></font></td></tr>";
  816.      print "<tr><td align=left><font color=\"$fontcolor\">";
  817.      foreach $textline (@se) {
  818.      print "$textline";}
  819.      print "</font><p>";
  820.      print "<font color=\"$fontcolor\" size=\"-1\">$popdate</font></td></tr>";
  821.      print "</tbody></table><p>"; close(SEARCHA);
  822.      }
  823.  
  824.  
  825.  close(SEARCH);
  826.  }until (@search == "0");
  827.  
  828.  if ("$found" eq "") {
  829.  print "<font color=\"$fontcolor\">ooops, no articles matched your search term: \"$search\".</font><p>";}
  830. }}}
  831. ######################################################################
  832. ######################################################################
  833. exit;
  834. # END